package algorithm.sort;

/**
 * 插入排序:从第二个数字开始,依次用当前索引对应的值和之前的索引对应的值对比,如果当前值小于之前值,就将之前值后移一位,直至没有移动的值之后,将当前值放入最后一次后移操作时指向的值
 * @author jiaqi.han
 * @date 2021年3月24日
 */
public class InsertSort extends CommonSort implements Sortable {

	public void sort(int[] targetArr) {
		int current = 0;
		for (int i = 0; i < targetArr.length - 1; i++) {
			current = targetArr[i + 1];
			int preIndex = i;
			while (preIndex >= 0 && current < targetArr[preIndex]) {
				targetArr[preIndex + 1] = targetArr[preIndex];
				preIndex--;
			}
			targetArr[preIndex + 1] = current;
		}
		displaySortedArray(-1, targetArr);
	}

}
